package top.yxqz.vagrancy.controller;

import com.baomidou.mybatisplus.mapper.EntityWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import top.yxqz.vagrancy.entity.UserEntity;
import top.yxqz.vagrancy.service.UserEntityService;
import top.yxqz.vagrancy.utils.R;

import javax.servlet.http.HttpSession;

/**
 * @author: 余小小
 * @date: 2023/6/8
 * @description：用户控制层（处理前后端交互数据）
 * @RestController =  Controller+ ResponseBody
 */
@RestController
@RequestMapping("/users")
public class UserController {

    //    自动装配 用户业务层
    @Autowired
    private UserEntityService userService;


    /**
     * 用户登录
     * 1.提前判断该用户是不是存在数据库中-----通过用户名查询数据---该数据为null，则该用户不存在
     * 2.判断用户密码是否和数据库中的密码一致----登录校验（在校验了用户存在的前提下， 校验密码匹配正确）
     *
     * @return
     */
    @PostMapping("/login")
    public R login(@RequestBody UserEntity user, HttpSession session) {
//        用户输入用户名 要使用用户名提前判断该用户是不是存在数据库中
        String username = user.getUsername();
//        创建条件构造器(对象条件)
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
        ew.eq("username", username);
        UserEntity user_mysql = userService.selectOne(ew);//条件查询 得到结果对象

        if (user_mysql == null) {
            return R.error("你的用户名不存在");
        }
//        先后顺序  eq
        String password_mysql = user_mysql.getPassword();
        String password_out = user.getPassword();
        if (!password_mysql.equals(password_out)) {
            return R.error("你的密码不对");
        }
//        将登录成功用户对象写在Session会话域
        session.setAttribute("user_session", user_mysql);

        return R.ok("你登录成功");
    }




}
